<!--

    Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:ez="http://java.sun.com/jsf/composite/composite">
    <h:head>
        <title>attachedvalidator</title>
    </h:head>

    <h:body>
        <ui:debug hotkey="p" rendered="true"/>

        <h:form id="form">

            <p>
                Maps Validator to inputText within composite/validator1.xhtml using
                only the name attribute.
            </p>
            <ez:validator1 id="validator1">
                <f:validator for="input" binding="#{compositeBean.validator}"/>
            </ez:validator1>
            <h:commandButton id="s1" value="Submit"/>

        </h:form>

        <h:form id="form2">
            <p>
                Maps Validator to inputText within composite/validator2.xhtml using
                name and target attributes.
            </p>
            <ez:validator2 id="validator2">
                <f:validator for="input" binding="#{compositeBean.validator}"/>
            </ez:validator2>
            <h:commandButton id="s2" value="Submit"/>

        </h:form>

        <h:form id="form3">
            <p>
                Maps Validator to a inputText within a composite/validator1.xhtml
                which is nested within composite/validator3.xhtml. Using the same ID
                in the nesting.
            </p>
            <ez:validator3 id="validator3">
                <f:validator for="input" binding="#{compositeBean.validator}"/>
            </ez:validator3>
            <h:commandButton id="s3" value="Submit"/>

        </h:form>

        <h:form id="form4">
            <p>
                Ensure validators are properly re-targeted when the
                target of the validator is nested within another naming
                container.  Note that the value of the 'for' attribute doesn't
                mimic the NamingContainer hierarchy, that's handled by the
                'targets' attribute within the composite:implementation section
                of validator4.xhtml.
            </p>
            <ez:validator4 id="validator4">
                <f:validator for="input" binding="#{compositeBean.validator}"/>
            </ez:validator4>
            <h:commandButton id="s4" value="Submit"/>
        </h:form>


        <h:form>
            <p />
            <h:commandButton id="clear" value="Clear Messages"/>
        </h:form>
        <h:messages id="messages"/>
    </h:body>
</html>
